﻿/******************************************************************************
 * 【本类功能概述】                                 					      *
 *  版权所有（C）2017-20XX，米兔网络                                         *
 *  保留所有权利。                                                            *
 ******************************************************************************
 *  作者 : <hughjk>
 *  创建时间:2018年9月4日 15:31:15
 *  文件描述:行为基类
 *****************************************************************************/

namespace BrainSpace
{
    //行为
    public class Actions
    {
        public bool isdebug { get { return Brain.isdebugLog; } }
        public ActionData m_data;
        public ActionCluster m_Cluster;
        public Goal m_steps;
        public Brain m_mgr;
        public bool isOver;
        public int exId;//顺序ID

        public void Init(ActionCluster cluster, int _exId, ActionData data)
        {
            exId = _exId;
            m_steps = cluster.m_steps;
            m_mgr = m_steps.m_Brain;
            m_Cluster = cluster;
            m_data = data;
            isOver = false;

            debug.log(isdebug, cluster.m_steps.m_data.m_id, cluster.m_data.m_ActionsType.toName() + "初始化 顺序", _exId, cluster.ActTypeName(m_data.m_data.essenceType), "参数:" + m_data);
            Active();
        }

        /// <summary>
        /// 激活
        /// </summary>
        public virtual void Active()
        {
        }

        //主要是重写这个方法
        public virtual void Start()
        {
            debug.log(debug.Level.warning_2, "执行类型 1 直接完成!", exId);
            Over();
        }

        //结束调用这个方法
        public void Over()
        {
            debug.log(isdebug, m_steps.m_data.m_id,
                m_Cluster.m_data.m_ActionsType.toName(),
                "结束 顺序", exId,
                m_Cluster.ActTypeName(m_data.m_data.essenceType),
                "参数:" + m_data);
            if (isOver == false)
            {
                isOver = true;
                Finish();
                m_Cluster.Overs(exId);
            }
        }

        /// <summary>
        /// 结束
        /// </summary>
        public virtual void Finish()
        {
        }

        /// <summary>
        /// 销毁
        /// </summary>
        public virtual void Dispose()
        {
        }
    }
}